package com.priox.sigar.client.dto;

import com.priox.sigar.enums.ActivoInactivo;
import com.priox.sigar.enums.TipoCuenta;
import com.priox.sigar.enums.TipoCuentaOperacion;
import org.apache.commons.lang3.StringUtils;

import javax.validation.constraints.NotNull;

/**
 * User: Matrix
 * Date: 19/01/13
 */
public class CuentaContableDTO extends AuditoriaDTO {


    @NotNull
    private String cuentaContableId;

    @NotNull
    private String descripcion;
    private boolean seleccionado;
    private ActivoInactivo estado;

    private String agrupacionCodigo;
    private Long agrupacionId;
    private TipoCuentaOperacion tipoOperacion;
    private Long grupoEmpresarialId;
    private String agrupacionNombre;

    private TipoCuenta tipoCuenta;

    private String agrupacionResumen;
    private String agrupacionStr;
    private String resumen;

    private AgrupacionDTO agrupacion;


    private boolean asignarAgrupacion;

    public boolean isAsignarAgrupacion() {
        return StringUtils.isNotBlank(getDescripcion());
    }

    public void setAsignarAgrupacion(boolean asignarAgrupacion) {
        this.asignarAgrupacion = asignarAgrupacion;
    }

    public Long getRowKey(){
        if(cuentaContableId==null) {
            System.out.println(this);
          return 1l;
        }

        return new Long(cuentaContableId);
    }

    public Long getAgrupacionId() {
        return agrupacionId;
    }

    public void setAgrupacionId(Long agrupacionId) {
        this.agrupacionId = agrupacionId;
    }

    public String getAgrupacionCodigo() {
        return agrupacionCodigo;
    }

    public void setAgrupacionCodigo(String agrupacionCodigo) {
        this.agrupacionCodigo = agrupacionCodigo;
    }

    public String getAgrupacionNombre() {
        return agrupacionNombre;
    }

    public void setAgrupacionNombre(String agrupacionNombre) {
        this.agrupacionNombre = agrupacionNombre;
    }

    public String getAgrupacionResumen() {
        return agrupacionCodigo+"-"+agrupacionNombre;
    }

    public ActivoInactivo getEstado() {
        return estado;
    }

    public void setEstado(ActivoInactivo estado) {
        this.estado = estado;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public AgrupacionDTO getAgrupacion() {
        return agrupacion;
    }

    public void setAgrupacion(AgrupacionDTO agrupacion) {
        this.agrupacion = agrupacion;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        CuentaContableDTO that = (CuentaContableDTO) o;
        if (cuentaContableId != null ? !cuentaContableId.equals(that.cuentaContableId) : that.cuentaContableId != null)
            return false;
        return true;
    }

    @Override
    public int hashCode() {
        return cuentaContableId != null ? cuentaContableId.hashCode() : 0;
    }

    public boolean isSeleccionado() {
        return seleccionado;
    }

    public void setSeleccionado(boolean seleccionado) {
        this.seleccionado = seleccionado;
    }

    public Long getGrupoEmpresarialId() {
        return grupoEmpresarialId;
    }

    public void setGrupoEmpresarialId(Long grupoEmpresarialId) {
        this.grupoEmpresarialId = grupoEmpresarialId;
    }


    public String getCuentaContableId() {
        return cuentaContableId;
    }

    public void setCuentaContableId(String cuentaContableId) {
        this.cuentaContableId = cuentaContableId;
    }

    public TipoCuenta getTipoCuenta() {
        return tipoCuenta;
    }

    public void setTipoCuenta(TipoCuenta tipoCuenta) {
        this.tipoCuenta = tipoCuenta;
    }

    public String getResumen() {
        return resumen;
    }

    public void setResumen(String resumen) {
        this.resumen = resumen;
    }

    @Override
    public String toString() {
        return "CuentaContableDTO{" +
                "cuentaContableId='" + cuentaContableId + '\'' +
                ", descripcion='" + descripcion + '\'' +
                ", seleccionado=" + seleccionado +
                ", estado=" + estado +
                ", agrupacionCodigo='" + agrupacionCodigo + '\'' +
                ", agrupacionId=" + agrupacionId +
                ", grupoEmpresarialId=" + grupoEmpresarialId +
                ", agrupacionNombre='" + agrupacionNombre + '\'' +
                ", tipoCuenta=" + tipoCuenta +
                ", agrupacionResumen='" + agrupacionResumen + '\'' +
                ", resumen='" + resumen + '\'' +
                ", agrupacion=" + agrupacion +
                '}';
    }

    public String getAgrupacionStr() {
        return agrupacionStr;
    }

    public void setAgrupacionStr(String agrupacionStr) {
        this.agrupacionStr = agrupacionStr;
    }

    public TipoCuentaOperacion getTipoOperacion() {
        return tipoOperacion;
    }

    public void setTipoOperacion(TipoCuentaOperacion tipoOperacion) {
        this.tipoOperacion = tipoOperacion;
    }
}
